using System;
using SKYPE4COMLib;
using System.Collections.Generic;
using System.Linq;

namespace SkypeStudio.Controls.Test.Mock
{
    public class SkypeUserMock : User
    {
        public SkypeUserMock()
        {

        }

        public string About
        {
            get;
            set;
        }

        public string Aliases
        {
            get;
            set;
        }

        public DateTime Birthday
        {
            get;
            set;
        }

        public TBuddyStatus BuddyStatus
        {
            get;
            set;
        }

        public bool CanLeaveVoicemail
        {
            get;
            set;
        }

        public string City
        {
            get;
            set;
        }

        public string Country
        {
            get;
            set;
        }

        public string CountryCode
        {
            get;
            set;
        }

        public string DisplayName
        {
            get;
            set;
        }

        public string FullName
        {
            get;
            set;
        }

        public string Handle
        {
            get;
            set;
        }

        public bool HasCallEquipment
        {
            get;
            set;
        }

        public string Homepage
        {
            get;
            set;
        }

        public bool IsAuthorized
        {
            get;
            set;
        }

        public bool IsBlocked
        {
            get;
            set;
        }

        public bool IsCallForwardActive
        {
            get;
            set;
        }

        public bool IsSkypeOutContact
        {
            get;
            set;
        }

        public bool IsVideoCapable
        {
            get;
            set;
        }

        public string Language
        {
            get;
            set;
        }

        public string LanguageCode
        {
            get;
            set;
        }

        public DateTime LastOnline
        {
            get;
            set;
        }

        public string MoodText
        {
            get;
            set;
        }

        public int NumberOfAuthBuddies
        {
            get;
            set;
        }

        public TOnlineStatus OnlineStatus
        {
            get;
            set;
        }

        public string PhoneHome
        {
            get;
            set;
        }

        public string PhoneMobile
        {
            get;
            set;
        }

        public string PhoneOffice
        {
            get;
            set;
        }

        public string Province
        {
            get;
            set;
        }

        public string ReceivedAuthRequest
        {
            get;
            set;
        }

        public TUserSex Sex
        {
            get;
            set;
        }

        public string SpeedDial
        {
            get;
            set;
        }

        public int Timezone
        {
            get;
            set;
        }
    }

    public class UserCollectionMock : UserCollection
    {

        private List<User> _Users = new List<User>();
        public UserCollectionMock()
        {
        }

        public void Add(User pUser)
        {
            _Users.Add(pUser);
        }

        public int Count
        {
            get { return _Users.Count; }
        }

        public System.Collections.IEnumerator GetEnumerator()
        {
            return _Users.GetEnumerator();
        }

        public void Remove(int Index)
        {
            _Users.RemoveAt(Index);
        }

        public void RemoveAll()
        {
            _Users.RemoveAll(o => { return true; });
        }

        public User this[int Index]
        {
            get { return _Users[Index]; }
        }
    }
}
